import type { IAccount, IFormItem, ITableCol, ITableRow } from '@/types/index.js'

/**
 * 接口返回数据类型集
 */
// 返回基本类型
export interface IBaseResponse<T = void> {
  result: boolean
  msg: string
  data?: T
}
// 表格数据类型
export interface IResponseTable extends IBaseResponse<ITableRow[]> {
  data: ITableRow[] // 覆盖为必需属性
  count: number
}

// 配置数据类型
export interface IResponseConfig extends IBaseResponse<never> {
  datas: ITableCol[][]
  forms: IFormItem[][]
}

// 登录校验接口数据
export interface IResponseAccount extends IBaseResponse<never> {
  Account: string
  AvatarURL: string | null
  IsChangePwd: string | null
  IsUpLoadAvatar: number
  Name: string
  ValidityDate: string
  ValidityDays: number
  token: string
  dev_Account: IAccount
}

// 基础二进制响应类型
export interface IBinaryResponse {
  data: ArrayBuffer
  headers: {
    'content-type': string
    'content-disposition'?: string
  }
}

// Excel 文件特定类型
export interface IExcelResponse extends IBinaryResponse {
  headers: {
    'content-type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
      | 'application/vnd.ms-excel'
    'content-disposition'?: string
  }
}
/**
 * 接口参数类型集
 */

// 表头接口参数
export interface IGetConfigParams {
  ID: number
}
// 登录接口参数
export interface ILoginParams {
  Pwd: string
  Account: string
}
